package com.haier.utils;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map.Entry;
import java.util.SortedMap;

/**
 * @描述: 数据转换
 * @作者: 栾学程
 * @日期: 2015年12月24日
 */
public class GetUtils {
	/**
	 * @描述: 转换成string
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static String getString(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return "";
			}
			return object.toString().trim();
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	/**
	 * @描述: 将数字转换成补零的字符串
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static String getIntString(int number, int count) {
		try {
			String numberString = GetUtils.getString(number);
			if (numberString.length() >= count) {
				return numberString;
			}
			StringBuffer result = new StringBuffer();
			for (int i = 0; i < (count - numberString.length()); i++) {
				result.append("0");
			}
			return result.append(numberString).toString();
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	/**
	 * @描述: 转换int
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static int getInt(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return 0;
			}
			return Integer.parseInt(object.toString());
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * @描述: 转换long
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static long getLong(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return 0l;
			}
			return Long.parseLong(object.toString());
		} catch (Exception e) {
			e.printStackTrace();
			return 0l;
		}
	}

	/**
	 * @描述: 转换float
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static float getFloat(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return 0f;
			}
			return Float.parseFloat(object.toString());
		} catch (Exception e) {
			e.printStackTrace();
			return 0f;
		}
	}

	/**
	 * @描述: 转换BigDecimal
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static BigDecimal getBigDecimal(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return BigDecimal.ZERO;
			}
			return new BigDecimal(object.toString());
		} catch (Exception e) {
			e.printStackTrace();
			return BigDecimal.ZERO;
		}
	}

	/**
	 * @描述: 转换boolean
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static boolean getBoolean(Object object) {
		try {
			if (EmptyUtils.isEmpty(object)) {
				return false;
			}
			if ("false".equals(object)) {
				return false;
			}
			if ("0".equals(object)) {
				return false;
			}
			if (object.equals(false)) {
				return false;
			}
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * @描述: 转换日期字符串
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static String getDateString(Date date) {
		try {
			if (EmptyUtils.isEmpty(date)) {
				return "";
			}
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	/**
	 * @描述: 根据日期格式转换日期字符串
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static String getDateString(Date date, String dateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateFormat) || EmptyUtils.isEmpty(date)) {
				return "";
			}
			return new SimpleDateFormat(dateFormat).format(date);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	/**
	 * @描述: 根据日期字符串 转换成另一种日期字符串
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static String getDateString(String dateStr, String dateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateStr) || EmptyUtils.isEmpty(dateFormat)) {
				return "";
			}
			Date date = GetUtils.getDate(dateStr, "yyyy-MM-dd HH:mm:ss");
			return GetUtils.getDateString(date, dateFormat);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	public static String getDateString(String dateStr, String dateFormat, String oldDateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateStr) || EmptyUtils.isEmpty(dateFormat) || EmptyUtils.isEmpty(oldDateFormat)) {
				return "";
			}
			Date date = GetUtils.getDate(dateStr, oldDateFormat);
			return GetUtils.getDateString(date, dateFormat);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	public static String getDateStringEnglish(String dateStr, String dateFormat, String oldDateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateStr) || EmptyUtils.isEmpty(dateFormat) || EmptyUtils.isEmpty(oldDateFormat)) {
				return null;
			}
			Date date = GetUtils.getDateEnglish(dateStr, oldDateFormat);
			return GetUtils.getDateString(date, dateFormat);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * @描述: 根据日期字符串转换成日期
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static Date getDate(String dateString) {
		try {
			if (EmptyUtils.isEmpty(dateString)) {
				return null;
			}
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateString);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * @描述: 根据日期字符串转换成date
	 * @作者: 栾学程
	 * @日期: 2015年12月24日
	 */
	public static Date getDate(String dateString, String dateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateString) || EmptyUtils.isEmpty(dateFormat)) {
				return null;
			}
			return new SimpleDateFormat(dateFormat).parse(dateString);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public static Date getDateEnglish(String dateString, String dateFormat) {
		try {
			if (EmptyUtils.isEmpty(dateString) || EmptyUtils.isEmpty(dateFormat)) {
				return null;
			}
			return new SimpleDateFormat(dateFormat, Locale.ENGLISH).parse(dateString);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public static String getXmlString(SortedMap<String, Object> sortedMap) {
		try {
			Iterator<Entry<String, Object>> iterator = sortedMap.entrySet().iterator();
			StringBuffer xmlString = new StringBuffer("<xml>");
			while (iterator.hasNext()) {
				Entry<String, Object> entry = iterator.next();
				if ("sign".equals(entry.getKey())) {
					continue;
				}
				xmlString.append("<").append(entry.getKey()).append(">");
				xmlString.append(entry.getValue());
				// xmlString.append("<![CDATA[").append(entry.getValue()).append("]]");
				xmlString.append("</").append(entry.getKey()).append(">");
			}
			xmlString.append("<sign>").append(sortedMap.get("sign")).append("</sign>");
			xmlString.append("</xml>");
			return xmlString.toString();
		} catch (Exception e) {
			return null;
		}
	}

}
